package com.div.toast;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.text.TextUtils;
import android.util.TypedValue;
import android.view.Gravity;
import android.widget.TextView;
import android.widget.Toast;

public class ToastUtils {

    public static void showShort(Context context, int resId) {
        showShort(context, context.getResources().getString(resId));
    }

    public static void showShort(Context context, String text) {
        if (TextUtils.isEmpty(text)) {
            return;
        }
        makeText(context, text, Toast.LENGTH_SHORT).show();
    }

    public static void showLong(Context context, int resId) {
        showLong(context, context.getResources().getString(resId));
    }

    public static void showLong(Context context, String text) {
        if (TextUtils.isEmpty(text)) {
            return;
        }
        makeText(context, text, Toast.LENGTH_LONG).show();
    }

    private static Toast makeText(Context context, String text, int duration) {
        Toast toast = new Toast(context);
        TextView tvToast = new TextView(context);
        int padding = dp2px(context, 16);
        tvToast.setPadding(padding, padding, padding, padding);
        tvToast.setBackground(createBg(context));
        tvToast.setGravity(Gravity.START);
        tvToast.setTextColor(context.getColor(android.R.color.white));
        tvToast.setText(text);
        toast.setGravity(Gravity.CENTER, 0, 0);
        toast.setDuration(duration);
        toast.setView(tvToast);
        return toast;
    }

    private static Drawable createBg(Context context) {
        GradientDrawable drawable = new GradientDrawable();
        drawable.setColor(Color.parseColor("#2E2E41"));
        drawable.setCornerRadius(dp2px(context, 6));
        return drawable;
    }

    private static int dp2px(Context context, float dp) {
        return (int) (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, Resources.getSystem().getDisplayMetrics()) + 0.5F);
    }
}
